package cn.lcsjsxy.yxc.multithreading.mode1;

/**
 * 多线程的创建，方式一：继承于Thread类
 * 1.创建一个继承于Thread类的子类
 * 2.重写Thread类中的run（）方法 ——》 将此线程执行的操作生命在run（）方法中
 * 3.创建Thread类的子类的对象
 * 4.通过此对象调用start（）方法
 * <p>
 * 例子：遍历100以内的所有偶数
 */

//创建一个继承于Thread类的子类
class MyThread extends Thread {
    @Override
    //重写run方法
    public void run() {
        for (int i = 0; i < 100; i++) {
            if (i % 2 == 0)
                System.out.println(Thread.currentThread().getName() + ":" + i);
        }
    }
}

public class ThreadTest {
    public static void main(String[] args) {
        //3.创建Thread类的子类的对象
        MyThread myThread = new MyThread();  //主线程

        //4.通过此对象调用start（）：1.启动当前线程 2.调用当前线程的run（）方法
        myThread.start();  //子线程

        //问题一：我们不能通过直接调用run（）方法的方式启动线程
//        myThread.run();

        //问题二：再启动一个线程，遍历100以内的偶数,不可以还让已经start（）的线程去执行，会报IllegalThreadStateException的异常
        //我们需要重新创建一个线程的对象
        MyThread myThread1=new MyThread();
        myThread1.start();

        for (int i = 0; i < 100; i++) {//主线程
            if (i % 2 != 0)
                System.out.println(Thread.currentThread().getName() + ":" + i);
        }
    }
}
